/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ufps.cuatro.modelo.asistente.clase.compleja.constructor;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import com.ufps.cuatro.controlador.render.UtilRender;
import com.ufps.cuatro.modelo.analizador.ObjetoReflexion;
import com.ufps.cuatro.modelo.representacion.ObjetoTipoDatoReflexion;
import com.ufps.cuatro.util.wizard.ObjectTempSwapWizard;
import com.ufps.cuatro.util.wizard.UtilWizard;
import com.ufps.cuatro.util.wizard.WizardPanelDescriptor;
import com.ufps.cuatro.vistas.asistente.clase.compleja.constructor.JPanelWizardClaseComplejaParametrosConstructorFinish;
import com.ufps.cuatro.vistas.asistente.clase.compleja.constructor.JPanelWizardClaseComplejaSelectConstructor;

/**
 *
 * @author Carlos A. Torres C. 
 */
public class JPanelWizardClaseComplejaParametrosConstructorFinishDescriptor extends WizardPanelDescriptor implements ActionListener {
    
    public static final String IDENTIFIER = "PARAMETROS_CONSTRUCTOR";
    private JPanelWizardClaseComplejaParametrosConstructorFinish objPanel;        
    private ObjetoReflexion objReflexionConstructor;
    private ObjetoTipoDatoReflexion objTipoDato;
    
    public JPanelWizardClaseComplejaParametrosConstructorFinishDescriptor(ObjetoTipoDatoReflexion objTipoDato) {
//        try{
            this.objTipoDato = objTipoDato;
            objPanel = new JPanelWizardClaseComplejaParametrosConstructorFinish(objTipoDato);
            objPanel.addCheckBoxActionListener(JPanelWizardClaseComplejaParametrosConstructorFinishDescriptor.this);
            setPanelDescriptorIdentifier(IDENTIFIER);
            setPanelComponent(objPanel);
//        }catch(java.lang.Exception ex){}
        
    }
    
    @Override
    public void displayingPanel() {     
//        try{
            JPanelWizardClaseComplejaSelectConstructorDescriptor objPanelDescriptor = (JPanelWizardClaseComplejaSelectConstructorDescriptor) this.getWizardModel().getPanelDescriptor(JPanelWizardClaseComplejaSelectConstructorDescriptor.IDENTIFIER);
            JPanelWizardClaseComplejaSelectConstructor objTempPanel = (JPanelWizardClaseComplejaSelectConstructor) objPanelDescriptor.getPanelComponent();
            objReflexionConstructor = objTempPanel.getObjConstructor();
            objPanel.setObjReflexionConstructor(objReflexionConstructor);
//        }catch(java.lang.Exception ex){}
        
    }
    
    @Override
    public Object getNextPanelDescriptor() {         
        return JPanelWizardClaseComplejaParametrosConstructorFinishDescriptor.FINISH;
    }
    
    @Override
    public Object getBackPanelDescriptor() {
        return JPanelWizardClaseComplejaSelectConstructorDescriptor.IDENTIFIER;
    }
    
    @Override
    public void aboutToDisplayPanel() {
//      try{
            setNextButtonAccordingToCheckBox();
//        }catch(java.lang.NullPointerException ex){}
    }    
    
    public void actionPerformed(ActionEvent e) {
//       if(e != null){
           setNextButtonAccordingToCheckBox();
//       }
    }            
    
    private void setNextButtonAccordingToCheckBox() {
//         if(objPanel.isListEmpty() && objPanel.getObjConstructores().isEmpty()){
//             UtilRender.msgAdvertencia("No puede generar un Componente Vacio.", objPanel);
//             getWizard().setNextFinishButtonEnabled(false);             
//             return;
//         }
//         else if(objPanel.getObjConstructor() == null){
//             UtilRender.msgAdvertencia("Debe Seleccionar un Constructor.", objPanel);
//             getWizard().setNextFinishButtonEnabled(false);             
//             return;
//         }
//         else{
//             getWizard().setNextFinishButtonEnabled(true);             
//         }        
         if (objPanel.isCheckBoxSelected()){
             if(objPanel.isListEmpty()){
                 UtilRender.msgAdvertencia("No puede generar un Componente Vacio.", objPanel);
                 return;
             }
             getWizard().setNextFinishButtonEnabled(true);
             procesarConfiguracion();
         }
         else{
             getWizard().setNextFinishButtonEnabled(false);             
         }           
    }     
    
    private void procesarConfiguracion() {   
        ObjectTempSwapWizard objSwap = new ObjectTempSwapWizard(UtilWizard.WIZARD_CLASS); 
        objSwap.setObj(objTipoDato);
        objSwap.setObjTemp(objReflexionConstructor);
        objSwap.add(ObjectTempSwapWizard.COLECCION, objPanel.getObjReflexionParametros());
        UtilWizard.objTempSwap = objSwap;
        System.out.println("Configuración Procesada en el Objeto de Intercambio....");
    }    
}
